#pragma once
#include<assert.h>
#include<iostream>
#include<vector>
namespace hcc
{
	template <class T,class container=std::vector<T>>
	class stack 
	{
	public:
		stack() {}
		void push(const T& data)
		{
			_con.push_back(data);
		}
		bool empty()
		{
			return _con.size() == 0;
		}
		void pop()
		{
			_con.pop_back();
			--_size;
		}
		T& top()
		{
			return _con.back();
		}
		const T& top()const
		{
			return _con.back();
		}
		size_t size()
		{
			return _size;
		}
	private:
		container _con;
		size_t _size;
	};
};














//#include<deque>
//
//    template<class T, class Con = deque<T>>
//
//    class stack
//
//    {
//
//    public:
//
//        stack();
//
//        void push(const T& x);
//
//        void pop();
//
//        T& top();
//
//        const T& top()const;
//
//        size_t size()const;
//
//        bool empty()const;
//
//    private:
//
//        Con _c;
//
//    };